<?php
namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;

use App\Services\Admin\AdminUserService;
use App\Services\Admin\RoleServices;
use App\Rules\Admin\AdminUserSaveRule;

/**
 * 管理员的控制器
 * Class UserController
 * @package App\Http\Controllers\Admin
 */
class UserController extends Controller
{
    /**
     * 登陆管理员 简介
     * @param Request $request
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function profile(Request $request){

        //管理员简介
        return view('admin.user.profile');
    }

    /**
     * 登陆管理员修改
     * @param Request $request
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function editProfile(Request $request){
        //管理员修改
        return view('admin.user.editProfile');
    }

    /**
     * 登陆管理员保存修改信息
     * @param Request $request
     */
    public function saveProfile(Request $request){
        //保存管理员修改信息
    }

    /**
     * 后台管理员首页列表
     * @param Request $request
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function index(Request $request){
        //后台管理员列表

        //后台管理员表
        $adminUserService = new AdminUserService();

        //搜索
        $searchData = $request->input('search');
        //每页显示数量
        $perPage = $request->input('perPage');

//        echo isset($searchData['status']);
//        echo '<pre>';
//        print_r($adminUserService->getAdminUser($request));
//        echo '<pre>';
//        exit;

        return view('admin.user.index', [
            'searchData' => $searchData,
            'tablePerPage' => !empty($perPage) ? $perPage : 20,
            'listObject' => $adminUserService->getAdminUser($request),
        ]);
    }

    /**
     * 管理员编辑页面
     * @param Request $request
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function editUser(Request $request){
        //后台管理员编辑页页
        //后台管理员表
        $adminUserService = new AdminUserService();

        //角色管理
        $roleService = new RoleServices();

        return view('admin.user.edit', [
            'editObject'=>$adminUserService->getAdminUserObject($request->route('id')),
            'roleArr' => $roleService->getRoleArr(),
        ]);
    }

    /**
     * 保存编辑管理员
     * @param AdminUserSaveRule $request
     */
    public function saveUser(AdminUserSaveRule $request){
        //保存后台管理员
        //管理员管理
        $adminUserService = new AdminUserService();

        return $adminUserService->save($request);
    }

    public function deleteUser(Request $request){
        //删除后台管理员
    }

    public function changeStatus(Request $request){
        //更改单个管理员状态
    }

    public function batchActions(Request $request){
        //更改多个管理员状态
    }
}
